home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / awt / BasicStroke.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  3.9 KB  |  236 lines

  1. package java.awt;
  2.  
  3. import java.awt.geom.AffineTransform;
  4. import java.awt.geom.PathIterator;
  5. import java.util.Arrays;
  6. import sun.dc.path.PathConsumer;
  7. import sun.dc.path.PathException;
  8. import sun.dc.pr.PathDasher;
  9. import sun.dc.pr.PathStroker;
  10.  
  11. public class BasicStroke implements Stroke {
  12.    public static final int JOIN_MITER = 0;
  13.    public static final int JOIN_ROUND = 1;
  14.    public static final int JOIN_BEVEL = 2;
  15.    public static final int CAP_BUTT = 0;
  16.    public static final int CAP_ROUND = 1;
  17.    public static final int CAP_SQUARE = 2;
  18.    float width;
  19.    int join;
  20.    int cap;
  21.    float miterlimit;
  22.    float[] dash;
  23.    float dash_phase;
  24.    private static final int[] RasterizerCaps = new int[]{30, 10, 20};
  25.    private static final int[] RasterizerCorners = new int[]{50, 10, 40};
  26.  
  27.    public BasicStroke(float var1, int var2, int var3, float var4, float[] var5, float var6) {
  28.       if (var1 < 0.0F) {
  29.          throw new IllegalArgumentException("negative width");
  30.       } else if (var2 != 0 && var2 != 1 && var2 != 2) {
  31.          throw new IllegalArgumentException("illegal end cap value");
  32.       } else {
  33.          if (var3 == 0) {
  34.             if (var4 < 1.0F) {
  35.                throw new IllegalArgumentException("miter limit < 1");
  36.             }
  37.          } else if (var3 != 1 && var3 != 2) {
  38.             throw new IllegalArgumentException("illegal line join value");
  39.          }
  40.  
  41.          if (var5 != null) {
  42.             if (var6 < 0.0F) {
  43.                throw new IllegalArgumentException("negative dash phase");
  44.             }
  45.  
  46.             boolean var7 = true;
  47.  
  48.             for(int var8 = 0; var8 < var5.length; ++var8) {
  49.                float var9 = var5[var8];
  50.                if ((double)var9 > (double)0.0F) {
  51.                   var7 = false;
  52.                } else if ((double)var9 < (double)0.0F) {
  53.                   throw new IllegalArgumentException("negative dash length");
  54.                }
  55.             }
  56.  
  57.             if (var7) {
  58.                throw new IllegalArgumentException("dash lengths all zero");
  59.             }
  60.          }
  61.  
  62.          this.width = var1;
  63.          this.cap = var2;
  64.          this.join = var3;
  65.          this.miterlimit = var4;
  66.          if (var5 != null) {
  67.             this.dash = (float[])(([F)var5).clone();
  68.          }
  69.  
  70.          this.dash_phase = var6;
  71.       }
  72.    }
  73.  
  74.    public BasicStroke(float var1, int var2, int var3, float var4) {
  75.       this(var1, var2, var3, var4, (float[])null, 0.0F);
  76.    }
  77.  
  78.    public BasicStroke(float var1, int var2, int var3) {
  79.       this(var1, var2, var3, 10.0F, (float[])null, 0.0F);
  80.    }
  81.  
  82.    public BasicStroke(float var1) {
  83.       this(var1, 2, 0, 10.0F, (float[])null, 0.0F);
  84.    }
  85.  
  86.    public BasicStroke() {
  87.       this(1.0F, 2, 0, 10.0F, (float[])null, 0.0F);
  88.    }
  89.  
  90.    public Shape createStrokedShape(Shape var1) {
  91.       FillAdapter var2 = new FillAdapter(this);
  92.       PathStroker var3 = new PathStroker(var2);
  93.       PathDasher var4 = null;
  94.  
  95.       try {
  96.          var3.setPenDiameter(this.width);
  97.          var3.setPenT4((float[])null);
  98.          var3.setCaps(RasterizerCaps[this.cap]);
  99.          var3.setCorners(RasterizerCorners[this.join], this.miterlimit);
  100.          Object var5;
  101.          if (this.dash != null) {
  102.             var4 = new PathDasher(var3);
  103.             var4.setDash(this.dash, this.dash_phase);
  104.             var4.setDashT4((float[])null);
  105.             var5 = var4;
  106.          } else {
  107.             var5 = var3;
  108.          }
  109.  
  110.          this.feedConsumer((PathConsumer)var5, var1.getPathIterator((AffineTransform)null));
  111.       } finally {
  112.          var3.dispose();
  113.          if (var4 != null) {
  114.             var4.dispose();
  115.          }
  116.  
  117.       }
  118.  
  119.       return var2.getShape();
  120.    }
  121.  
  122.    private void feedConsumer(PathConsumer var1, PathIterator var2) {
  123.       try {
  124.          var1.beginPath();
  125.          boolean var3 = false;
  126.          float var4 = 0.0F;
  127.          float var5 = 0.0F;
  128.  
  129.          for(float[] var6 = new float[6]; !var2.isDone(); var2.next()) {
  130.             int var7 = var2.currentSegment(var6);
  131.             if (var3) {
  132.                var3 = false;
  133.                if (var7 != 0) {
  134.                   var1.beginSubpath(var4, var5);
  135.                }
  136.             }
  137.  
  138.             switch (var7) {
  139.                case 0:
  140.                   var4 = var6[0];
  141.                   var5 = var6[1];
  142.                   var1.beginSubpath(var6[0], var6[1]);
  143.                   break;
  144.                case 1:
  145.                   var1.appendLine(var6[0], var6[1]);
  146.                   break;
  147.                case 2:
  148.                   var1.appendQuadratic(var6[0], var6[1], var6[2], var6[3]);
  149.                   break;
  150.                case 3:
  151.                   var1.appendCubic(var6[0], var6[1], var6[2], var6[3], var6[4], var6[5]);
  152.                   break;
  153.                case 4:
  154.                   var1.closedSubpath();
  155.                   var3 = true;
  156.             }
  157.          }
  158.  
  159.          var1.endPath();
  160.       } catch (PathException var8) {
  161.          throw new InternalError("Unable to Stroke shape (" + var8.getMessage() + ")");
  162.       }
  163.    }
  164.  
  165.    public float getLineWidth() {
  166.       return this.width;
  167.    }
  168.  
  169.    public int getEndCap() {
  170.       return this.cap;
  171.    }
  172.  
  173.    public int getLineJoin() {
  174.       return this.join;
  175.    }
  176.  
  177.    public float getMiterLimit() {
  178.       return this.miterlimit;
  179.    }
  180.  
  181.    public float[] getDashArray() {
  182.       return this.dash == null ? null : (float[])((float[])this.dash.clone());
  183.    }
  184.  
  185.    public float getDashPhase() {
  186.       return this.dash_phase;
  187.    }
  188.  
  189.    public int hashCode() {
  190.       int var1 = Float.floatToIntBits(this.width);
  191.       var1 = var1 * 31 + this.join;
  192.       var1 = var1 * 31 + this.cap;
  193.       var1 = var1 * 31 + Float.floatToIntBits(this.miterlimit);
  194.       if (this.dash != null) {
  195.          var1 = var1 * 31 + Float.floatToIntBits(this.dash_phase);
  196.  
  197.          for(int var2 = 0; var2 < this.dash.length; ++var2) {
  198.             var1 = var1 * 31 + Float.floatToIntBits(this.dash[var2]);
  199.          }
  200.       }
  201.  
  202.       return var1;
  203.    }
  204.  
  205.    public boolean equals(Object var1) {
  206.       if (!(var1 instanceof BasicStroke)) {
  207.          return false;
  208.       } else {
  209.          BasicStroke var2 = (BasicStroke)var1;
  210.          if (this.width != var2.width) {
  211.             return false;
  212.          } else if (this.join != var2.join) {
  213.             return false;
  214.          } else if (this.cap != var2.cap) {
  215.             return false;
  216.          } else if (this.miterlimit != var2.miterlimit) {
  217.             return false;
  218.          } else {
  219.             if (this.dash != null) {
  220.                if (this.dash_phase != var2.dash_phase) {
  221.                   return false;
  222.                }
  223.  
  224.                if (!Arrays.equals(this.dash, var2.dash)) {
  225.                   return false;
  226.                }
  227.             } else if (var2.dash != null) {
  228.                return false;
  229.             }
  230.  
  231.             return true;
  232.          }
  233.       }
  234.    }
  235. }
  236.